#ifndef FILM_H
#define FILM_H
#include <QList>
#include <QString>
#include <QPixmap>
#include "personne.h"
#include "genre.h"
#include "nationalite.h"


class film : public QObject
{
    Q_OBJECT
public:
    film(QObject * parent = 0);
    film(const QString & titre,QObject * parent = 0);
    film(film &f);
    ~film();

    film& operator =(const film&);

    // Méthodes
    int Existe(int codeAllocine); // -1 : non trouvé ; -2 : ATTENTION, plusieurs résultats ! ; sinon id du film
    void Enregistre();
    void Supprime();
    static QList<film *> ListeFilms();
    void NouvelId();

    // Accesseurs
    int id();
    void setCodeAllocine(int code); // != id : code Allocine
    int codeAllocine();
    void setCodeAllocineBandeAnnonce(int code);
    int codeAllocineBandeAnnonce();
    void setDuree(int seconde);
    int duree();
    void setTitre(QString titre);
    QString titre();
    void setTitreOriginal(QString titreOriginal);
    QString titreOriginal();
    void setSynopsis(QString synopsis);
    QString synopsis();
    void setCritique(QString critique);
    QString critique();
    void setAffiche(QString cheminAffiche);
    QString affiche();
    void setBandeAnnonce(QString cheminBandeAnnonce);
    QString bandeAnnonce();
    void setType(QString type);
    QString type();
    void setNoteAllocine(float noteAllocine);
    float noteAllocine();
    void setNotePresse(float notePresse);
    float notePresse();
    void setMaNote(float maNote);
    float maNote();
    void setDate(QString date);
    QString date();
    void setListeRealisateurs(QList<personne> listeRealisateurs);
    QList<personne> listeRealisateurs();
    void setListeActeurs(QList<personne> listeActeurs);
    QList<personne> listeActeurs();
    void setListeNationalites(QList<nationalite> listeNationalites);
    QList<nationalite> listeNationalites();
    void setListeGenres(QList<genre> listeGenres);
    QList<genre> listeGenres();
    void setPochette(QPixmap image);
    QPixmap Pochette();

    void afficherFilm(QWidget* w);

signals:
    void film_parse();

public slots:
    void afficherFilmDialog();
    void parserTout();
    void parserToutSynchrone();

protected slots :
    void parserCodeParTitre();
    void parserInfoParCode();
    void parserAffiche();
    void parserBandeAnnonce();
    void enregistrement();


private:
    // Attributs
    int idFilm, codeAllocineFilm, codeAllocineBandeAnnonceFilm, dureeSeconde;
    QString titreFilm, titreOriginalFilm, synopsisFilm, critiqueFilm, afficheFilm, bandeAnnonceFilm, typeFilm;
    float noteAllocineFilm, notePresseFilm, maNoteFilm;
    QString dateFilm;
    QList<personne> listeRealisateursFilm, listeActeursFilm;
    QList<genre> listeGenresFilm;
    QList<nationalite> listeNationalitesFilm;
    QPixmap pochette;
};

#endif // FILM_H
